//
//  Flight.h
//  
//
//  Created by Gonzalo Ariel Prieto Vidueira on 9/2/13.
//
//

#ifndef _Flight_h
#define _Flight_h

#include "FlightState.h"
#include "../comunication/DTO/DTOFlightRelated.h"
#include "../comunication/inbox/FlightInbox.h"
#include "../utils/Logger.h"
#include <vector>
#include "../comunication/inbox/TowerControlInbox.h"
#include "Proceso.h"

class Flight : public Proceso {
public:
	Flight(unsigned int flightId,Status state);
	~Flight();

	void takeOff();
	void land();

	//Una vez que toca tierra puede estacionar
	void changeStatus(Status);

	const FlightState getState();

	unsigned int getFlightId();

	DTOFlightRelated getDTO();

	int run();

private:
	unsigned int flightId;
	bool isRunning;

	FlightInbox inbox;
	TowerControlInbox tcI;

	//Estado del vuelo
	FlightState state;

};

#endif
